package com.vca.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.vca.common.model.category.Category;
import com.vca.common.page.CommonPage;
import com.vca.common.request.*;
import com.vca.common.response.CourseTypeResponse;
import com.vca.common.response.ProductTypeAdminResponse;
import com.vca.common.vo.CategoryTreeVo;
import com.vca.common.vo.CourseTypeVo;
import com.vca.common.vo.MyRecord;

import java.util.HashMap;
import java.util.List;

/**
 * CategoryService 接口
 */
public interface CategoryService extends IService<Category> {

    List<Category> getList(CategorySearchRequest request, PageParamRequest pageParamRequest);

    int delete(Integer id);

    /**
     * 获取树形结构数据
     *
     * @param type   分类
     * @param status 状态
     * @param name   名称
     * @return List
     */
    List<CategoryTreeVo> getListTree(Integer type, Integer status, String name);

    /**
     * 获取树形结构数据
     *
     * @param type           分类
     * @param status         状态
     * @param categoryIdList 分类idList
     * @return List
     */
    List<CategoryTreeVo> getListTree(Integer type, Integer status, List<Integer> categoryIdList);

    List<Category> getByIds(List<Integer> ids);

    HashMap<Integer, String> getListInId(List<Integer> cateIdList);

    Boolean checkAuth(List<Integer> pathIdList, String uri);

    boolean update(CategoryRequest request, Integer id);

    List<Category> getChildVoListByPid(Integer pid);

    boolean checkUrl(String uri);

    boolean updateStatus(Integer id);

    /**
     * 新增分类表
     */
    Boolean create(CategoryRequest categoryRequest);

    /**
     * 获取文章分类列表
     *
     * @return List<Category>
     */
    List<Category> findArticleCategoryList();

    /**
     * @Description:课程类型分页列表
     * @Author: chenBing
     * @Date: 2022/11/2
     */
    CommonPage<CourseTypeResponse> courseTypeList(Integer status, String courseTypeName, PageParamRequest pageParamRequest);

    /**
     * @Description:获取tree结构的列表
     * @Author: chenBing
     * @Date: 2022/11/2
     */
    List<CourseTypeVo> getCourseTypeListTree(Integer status, String courseTypeName, PageParamRequest pageParamRequest);

    /**
     * @Description:新增课程分类
     * @Author: chenBing
     * @Date: 2022/11/7
     */
    Boolean addCourseType(CourseTypeRequest request);

    /**
     * @Description:修改课程分类
     * @Author: chenBing
     * @Date: 2022/11/7
     */
    Boolean editCourseType(CourseTypeRequest request);

    /**
     * @Description:删除课程分类
     * @Author: chenBing
     * @Date: 2022/11/7
     */
    Boolean removeCourseType(Integer cid);

    /**
     * 分页显示商品分类
     * @author li
     * @since 2022-11-21
     */
    List<ProductTypeAdminResponse> getProductTypeList(Integer status, String productTypeName);

    /**
     * 新增商品类型
     * @param request 新增参数
     * @author Li
     * @date 2022/11/22 09:24
     */
    boolean addProductType(ProductTypeRequest request);

    /**
     * 删除商品分类
     * @param id Integer
     * @author Li
     * @since 2022/11/22 09:31
     */
    boolean deleteProudctType(Integer id);

    /**
     * 修改商品分类
     * @param request 修改参数
     * @author Li
     * @since 2022/11/22 09:46
     */
    boolean updateProductType(ProductTypeRequest request);
}
